home *** CD-ROM | disk | FTP | other *** search
- Path: abcfd20.larc.nasa.gov!amiga-request
- From: amiga-request@abcfd20.larc.nasa.gov (Amiga Sources/Binaries Moderator)
- Subject: v90i227: spiders - arachnids amble about your amiga, Part01/01
- Reply-To: thyssen@batserver.cs.uq.oz.au (Anthony Thyssen)
- Newsgroups: comp.sources.amiga
- Message-ID: <comp.sources.amiga:v90i227@abcfd20.larc.nasa.gov>
- Date: 17 Aug 90 18:44:35 GMT
- Approved: tadguy@uunet.UU.NET (Tad Guy)
- X-Mail-Submissions-To: amiga@uunet.uu.net
- X-Post-Discussions-To: comp.sys.amiga
-
- Submitted-by: thyssen@batserver.cs.uq.oz.au (Anthony Thyssen)
- Posting-number: Volume 90, Issue 227
- Archive-name: examples/spiders/part01
-
- [ uuencoded executable and icon included ...tad ]
-
- Spiders -- A WB screen hack, Arrgghhh spiders are eating my screen!
- A minor program developed side-by-side with the crabs program
-
- Any changes you make or Ideas I'd like to hear from you.
-
- #!/bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 1 (of 1)."
- # Contents: .info.uu makefile maskimage spiderimage spiders.c
- # spiders.h spiders.uu spiders0.uu
- # Wrapped by tadguy@abcfd20 on Fri Aug 17 14:44:33 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f '.info.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'.info.uu'\"
- else
- echo shar: Extracting \"'.info.uu'\" \(66 characters\)
- sed "s/^X//" >'.info.uu' <<'END_OF_FILE'
- Xbegin 644 .info
- X8\TP`$@``$2D```+/```'-P:61E<G,*R
- X``
- Xend
- Xsize 24
- END_OF_FILE
- if test 66 -ne `wc -c <'.info.uu'`; then
- echo shar: \"'.info.uu'\" unpacked with wrong size!
- fi
- # end of '.info.uu'
- fi
- if test -f 'makefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'makefile'\"
- else
- echo shar: Extracting \"'makefile'\" \(239 characters\)
- sed "s/^X//" >'makefile' <<'END_OF_FILE'
- X
- Xspiders : spiders.c spiders.h spiderimage.i maskimage.i
- X lc -v -Lc $@
- X
- Xspiderimage.i : spiderimage
- X intergerize <$* >$@
- X
- Xmaskimage.i : maskimage intergerize
- X intergerize <$* >$@
- X
- Xclean :
- X delete *.i *.lnk *.o
- X
- END_OF_FILE
- if test 239 -ne `wc -c <'makefile'`; then
- echo shar: \"'makefile'\" unpacked with wrong size!
- fi
- # end of 'makefile'
- fi
- if test -f 'maskimage' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'maskimage'\"
- else
- echo shar: Extracting \"'maskimage'\" \(96 characters\)
- sed "s/^X//" >'maskimage' <<'END_OF_FILE'
- X***************
- X***************
- X.*************.
- X.*************.
- X...*********...
- X.....**...*....
- END_OF_FILE
- if test 96 -ne `wc -c <'maskimage'`; then
- echo shar: \"'maskimage'\" unpacked with wrong size!
- fi
- # end of 'maskimage'
- fi
- if test -f 'spiderimage' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'spiderimage'\"
- else
- echo shar: Extracting \"'spiderimage'\" \(96 characters\)
- sed "s/^X//" >'spiderimage' <<'END_OF_FILE'
- X.......*.......
- X...............
- X.**...***...**.
- X**..*******..**
- X..**..***..**..
- X***.........***
- END_OF_FILE
- if test 96 -ne `wc -c <'spiderimage'`; then
- echo shar: \"'spiderimage'\" unpacked with wrong size!
- fi
- # end of 'spiderimage'
- fi
- if test -f 'spiders.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'spiders.c'\"
- else
- echo shar: Extracting \"'spiders.c'\" \(11701 characters\)
- sed "s/^X//" >'spiders.c' <<'END_OF_FILE'
- X/************************************************************************/
- X/* */
- X/* ###################### */
- X/* A n t h o n y ## ## ## */
- X/* ########## */
- X/* T h y s s e n #### ## #### */
- X/* #### ## #### */
- X/* #### ## #### */
- X/* */
- X/************************************************************************/
- X
- X/*
- X** Spiders - for AMIGA under lattace C
- X*/
- X
- X#include <stdio.h>
- X#include <string.h>
- X#include <intuition/intuition.h>
- X#include <graphics/gfx.h>
- X#include <exec/exec.h>
- X#include <proto/all.h>
- X#define BM_SRC 0xC0 /* minterm source only */
- X#define BM_DST 0xA0 /* minterm destination only */
- X
- X#include "spiders.h"
- X
- Xstruct Library *IntuitionBase = NULL, *GfxBase = NULL;
- Xstruct Remember *Remember = NULL;
- Xstruct Screen *WBScrn = NULL;
- Xstruct Window *Window = NULL; /* Window pointer */
- Xstruct Task *MyTask = NULL; /* my tasks address */
- Xstruct IntuiMessage *message;
- XULONG WindowSignal; /* IDCMP window signal */
- Xint WBDepth, WBScrX, WBScrY; /* Screen info */
- Xstruct NewWindow NW = {
- X 30, 200, 205, 10, 0, 1, /* position, size and colors */
- X CLOSEWINDOW, /* IDCMP messages */
- X ACTIVATE| SIMPLE_REFRESH| WINDOWDEPTH|
- X WINDOWDRAG| WINDOWCLOSE, /* window flags */
- X NULL, NULL, /* gadget, checkmark */
- X (UBYTE *) " -- Spiders -- ", /* name of window */
- X NULL,NULL, /* screen-> , BitMap-> */
- X 0,0,0,0, /* min and max size (disable) */
- X WBENCHSCREEN /* screen type */
- X };
- X
- X
- Xtypedef struct {
- X int x, y;
- X} point;
- X
- Xtypedef enum {
- X Sleeping, /* Waiting to start - off screen */
- X Waiting, /* Comtemplating the decent */
- X Decending, /* Going down screen */
- X Landed, /* Getting a bit of screen */
- X Ascending, /* Going up the screen */
- X Munching /* eating its bit of screen */
- X} status;
- X
- Xstatic struct {
- X point ulc; /* upper left corner of spider */
- X status stat; /* current status of crab */
- X int time; /* time count down to actions */
- X struct RastPort bitRP; /* raster port for screen bit */
- X struct BitMap bitBM; /* bit map for the screen bit */
- X} Spider[NUMBER]; /* spider' state */
- X
- X/* images and masks */
- Xunsigned short chip SpiderImage[] =
- X# include "spiderimage.i"
- Xunsigned short chip MaskImage[] =
- X# include "maskimage.i"
- X
- Xstruct RastPort SpiderRP, MaskRP, ScreenRP; /* RastPorts */
- Xstruct BitMap SpiderBM, MaskBM; /* BitMaps */
- X
- X#ifdef CBACK
- X/* Cback.o varibles */
- Xlong _stack = 2000;
- Xchar *_procname = "spiders";
- Xlong _priority = -1;
- Xlong _BackGroundIO = 0;
- X#endif
- X
- X /* function declarations */
- Xextern void Init(), OpenLibraries(), SpiderExit(), Cycle();
- Xextern void HideScrBit(), DrawScrBit(), HideSpider(), DrawSpider();
- Xextern int TestDown(), RandInt();
- Xextern void RandInit();
- X
- Xvoid
- X_main()
- X /* I am not using printf's functions so _main() will do */
- X{
- X Init(); /* set up initial grey crab layer */
- X
- X for (;;) { /* no way out! */
- X Cycle(); /* move the crabs */
- X }
- X /* NOTREACHED */
- X}
- X
- Xvoid
- XInit()
- X{
- X int i, j;
- X
- X RandInit();
- X
- X OpenLibraries(); /* open the various system structures */
- X
- X if( !(Window = OpenWindow( &NW )) )
- X SpiderExit();
- X WindowSignal = 1<<Window->UserPort->mp_SigBit;
- X
- X MyTask = FindTask( NULL );
- X WBScrn = Window->WScreen;
- X WBDepth = 2; /* Assume it (for WB pic progs) */
- X WBScrX = WBScrn->Width -XSPIDER;
- X WBScrY = WBScrn->Height -YSPIDER;
- X
- X /* grab a copy of the screens raster port */
- X memcpy( (char *)&ScreenRP, (char *)&WBScrn->RastPort,
- X sizeof( struct RastPort ) );
- X
- X /* define spiders */
- X for (i = 0; i < NUMBER; i++) {
- X Spider[i].stat = Sleeping; /* spider is just sleeping */
- X Spider[i].time = RandInt(1, SLEEPTIME);
- X /* initialise bitmaps */
- X InitRastPort( &Spider[i].bitRP );
- X Spider[i].bitRP.BitMap = &Spider[i].bitBM;
- X InitBitMap( &Spider[i].bitBM, WBDepth, XMASK, YMASK);
- X for( j = 0; j < WBDepth; j++ )
- X if( !( Spider[i].bitBM.Planes[j] = (PLANEPTR)
- X AllocRemember( &Remember, RASSIZE(XMASK, YMASK),
- X MEMF_CHIP | MEMF_CLEAR ) ) )
- X SpiderExit();
- X }
- X InitRastPort( &MaskRP );
- X MaskRP.BitMap = &MaskBM;
- X InitBitMap( &MaskBM, WBDepth, XMASK, YMASK);
- X for( j = 0; j < WBDepth; j++ )
- X MaskBM.Planes[j] = (PLANEPTR) &MaskImage;
- X
- X InitRastPort( &SpiderRP );
- X SpiderRP.BitMap = &SpiderBM;
- X InitBitMap( &SpiderBM, 1, XSPIDER, YSPIDER);
- X SpiderBM.Planes[0] = (PLANEPTR) &SpiderImage;
- X}
- X
- Xvoid
- XOpenLibraries()
- X{
- X if( ! (IntuitionBase = OpenLibrary( "intuition.library", 0 )) )
- X SpiderExit();
- X if( ! (GfxBase = OpenLibrary( "graphics.library", 0 )) )
- X SpiderExit();
- X}
- X
- Xvoid
- XSpiderExit()
- X/* exit - remove all traces */
- X{
- X FreeRemember( &Remember, TRUE ); /* free all allocated memory */
- X
- X if( Window ) CloseWindow( Window );
- X if( GfxBase ) CloseLibrary( GfxBase );
- X if( IntuitionBase ) CloseLibrary( IntuitionBase );
- X
- X exit(0);
- X}
- X
- Xvoid
- XCycle()
- X /* one motion cycle for all spiders */
- X{
- X int s; /* spider to do */
- X
- X /* test for window closure */
- X if( message = (void *)GetMsg(Window->UserPort) ) {
- X ReplyMsg( (void *) message );
- X switch( message->Class ) {
- X case CLOSEWINDOW : /* window closed message */
- X SpiderExit();
- X }
- X } /* Message test */
- X
- X#if DELAY
- X Delay(DELAY);
- X#endif
- X
- X for (s = 0; s < NUMBER; s++) {
- X switch( Spider[s].stat ) {
- X case Sleeping:
- X {
- X int i, test;
- X
- X if( --Spider[s].time ) break; /* spider not yet ready to start */
- X do {
- X Spider[s].ulc.x = RandInt(0, WBScrX);
- X test = TRUE; /* assume this position is OK */
- X for(i = 0; i < NUMBER; i++)
- X if( Spider[i].stat != Sleeping &&
- X Spider[s].ulc.x > Spider[i].ulc.x - XSPIDER &&
- X Spider[i].ulc.x > Spider[s].ulc.x - XSPIDER ) {
- X test = FALSE; /* spider on screen already in this position */
- X break;
- X }
- X } while ( !test ); /* repeat search until good position found */
- X Spider[s].ulc.y = SCREENTOP;
- X Spider[s].stat = Waiting;
- X Spider[s].time = WAITTIME;
- X DrawSpider(s);
- X }
- X break;
- X
- X case Waiting:
- X if( Spider[s].time-- ) break;
- X Spider[s].stat = Decending;
- X break;
- X
- X case Decending:
- X {
- X int y, speed;
- X
- X y = Spider[s].ulc.y;
- X speed = TestDown(s); /* check on landing or screen bottom */
- X y += speed; /* Decend quickly or stop? */
- X if( !speed )
- X Spider[s].stat = Landed;
- X Spider[s].ulc.y = y;
- X DrawSpider(s); /* don't hide spide to leave ... trail */
- X }
- X break;
- X
- X case Landed:
- X /* bit of screen already read in testdown() just wait */
- X Spider[s].stat = Ascending;
- X break;
- X
- X case Ascending:
- X {
- X int y;
- X
- X y = Spider[s].ulc.y;
- X y--; /* Ascend at a slow rate */
- X if( y < SCREENTOP ) { /* Spider hit rock bottom */
- X y = SCREENTOP;
- X Spider[s].stat = Munching;
- X Spider[s].time = (YMASK+2) * EATRATE-1;
- X }
- X HideSpider(s); HideScrBit(s);
- X Spider[s].ulc.y = y;
- X DrawSpider(s); DrawScrBit(s);
- X }
- X break;
- X
- X case Munching:
- X if( !Spider[s].time ) {
- X /* reinitialize start */
- X Spider[s].stat = Sleeping;
- X Spider[s].time = RandInt(1, SLEEPTIME); /* random delay in starting */
- X HideSpider(s);
- X break;
- X }
- X if( !(Spider[s].time-- % EATRATE ) ) { /* eat another bit? */
- X HideScrBit(s);
- X ScrollRaster( &Spider[s].bitRP, 0, 1, 0, 0, XMASK-1, YMASK-1);
- X DrawScrBit(s);
- X }
- X break;
- X }
- X } /* move next spider */
- X}
- X
- Xint
- XTestDown(s)
- X int s;
- X/* returns distance to first screen bit below spider */
- X/* if the Spider is withing SPEED of that piece */
- X/* Also gets the actual piece into the bitRP of spider */
- X{
- X int i, j, size, speed = SPEED;
- X UBYTE *bits0, *bits1;
- X /* clear out any old image */
- X SetRast( &Spider[s].bitRP, 0 );
- X
- X size = WBScrY - Spider[s].ulc.y;
- X if( size > YMASK ) size = YMASK; /* reduce image size */
- X if( size < speed ) speed = size; /* reduce speed - don't over shoot */
- X if( !size ) return 0; /* oops rock bottom! */
- X
- X /* get a image from screen */
- X ClipBlit( &ScreenRP, Spider[s].ulc.x, Spider[s].ulc.y + YSPIDER,
- X &Spider[s].bitRP, 0, 0,
- X XMASK, size, BM_SRC);
- X /* mask out background */
- X ClipBlit( &MaskRP, 0, 0,
- X &Spider[s].bitRP, 0, 0,
- X XMASK, YMASK, BM_SRC & BM_DST);
- X
- X /* check the data to find distance to landing on screen bit */
- X bits0 = Spider[s].bitBM.Planes[0];
- X bits1 = Spider[s].bitBM.Planes[1];
- X for (i = 0; i < speed; i++)
- X for( j = 0; j < Spider[s].bitBM.BytesPerRow; j++ )
- X if( *(bits0++) || *(bits1++) ) /* if a bit in either plane */
- X return i; /* return distance to screen bit */
- X
- X return speed; /* return speed */
- X}
- X
- Xvoid
- XHideScrBit(s)
- X int s;
- X /* remove screen bit carried */
- X{
- X int size;
- X
- X size = WBScrY - Spider[s].ulc.y;
- X if( size > YMASK ) size = YMASK; /* reduce image size */
- X if( !size ) return; /* noting to erase */
- X
- X ClipBlit( &MaskRP, 0, 0,
- X &ScreenRP, Spider[s].ulc.x, Spider[s].ulc.y + YSPIDER,
- X XMASK, size, ~BM_SRC & BM_DST);
- X}
- X
- Xvoid
- XDrawScrBit(s)
- X int s;
- X/* draw screen bit carried */
- X{
- X int size;
- X
- X size = WBScrY - Spider[s].ulc.y;
- X if( size > YMASK ) size = YMASK; /* reduce image size */
- X if( !size ) return; /* no room to draw */
- X ClipBlit( &Spider[s].bitRP, 0, 0,
- X &ScreenRP, Spider[s].ulc.x, Spider[s].ulc.y + YSPIDER,
- X XMASK, size, BM_SRC | BM_DST);
- X}
- X
- Xvoid
- XHideSpider(s)
- X int s;
- X/* over write current spider */
- X{
- X ClipBlit( &SpiderRP, 0, 0,
- X &ScreenRP, Spider[s].ulc.x, Spider[s].ulc.y,
- X XSPIDER, YSPIDER, 0);
- X}
- X
- Xvoid
- XDrawSpider(s)
- X int s;
- X/* Draw the spider on the screen */
- X{
- X ClipBlit( &SpiderRP, 0, 0,
- X &ScreenRP, Spider[s].ulc.x, Spider[s].ulc.y,
- X XSPIDER, YSPIDER, BM_SRC);
- X}
- X
- Xvoid
- XRandInit()
- X{
- X srand((int)time(NULL));
- X}
- X
- Xint
- XRandInt(lo, hi) /* generate random integer in range */
- X int lo, hi; /* range lo..hi inclusive */
- X{
- X return lo + (int)( (unsigned)rand() % (hi - lo +1) );
- X}
- X
- END_OF_FILE
- if test 11701 -ne `wc -c <'spiders.c'`; then
- echo shar: \"'spiders.c'\" unpacked with wrong size!
- fi
- # end of 'spiders.c'
- fi
- if test -f 'spiders.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'spiders.h'\"
- else
- echo shar: Extracting \"'spiders.h'\" \(679 characters\)
- sed "s/^X//" >'spiders.h' <<'END_OF_FILE'
- X/* This contains all the defines for spider.c */
- X
- X#define NUMBER 5 /* number of spiders to use */
- X#define SPEED 2 /* speed (pixels) of decending spider */
- X#define SLEEPTIME 30 /* time maximun bettween on screen action */
- X#define WAITTIME 30 /* time to wait at the top of screen */
- X#define EATRATE 10 /* cycles to eat a line of screen bits */
- X#define SCREENTOP 10 /* start height for spiders */
- X#define DELAY 0 /* delay period for Delay() call */
- X
- X#define XSPIDER 15 /* Spider image size */
- X#define YSPIDER 6
- X
- X#define XMASK 15 /* screen bit mask size */
- X#define YMASK 6
- X
- END_OF_FILE
- if test 679 -ne `wc -c <'spiders.h'`; then
- echo shar: \"'spiders.h'\" unpacked with wrong size!
- fi
- # end of 'spiders.h'
- fi
- if test -f 'spiders.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'spiders.uu'\"
- else
- echo shar: Extracting \"'spiders.uu'\" \(7024 characters\)
- sed "s/^X//" >'spiders.uu' <<'END_OF_FILE'
- Xbegin 644 spiders
- XM```#\P`````````$``````````,```1S0```!@````````'7```#Z0``!',D9
- XM2"0`2?D`````1_D```$$<@`@/````99@`B;!4<C__"QX``0I3@$\*4\!1$*L\
- XM`4`F;@$4<``B/```,`!.KO[.*6L`F`$X2JL`K&<``'`@#Y"O``0&@````(`IN
- XM0`$(80`!+B!K`*S1R-'((F@`$-/)T\D@`G(`$ADI20%,T(%2@$)G4H`"0/_^O
- XMG\!5@$)W"``@`E.`U($?L@``(`!3@E'(__8?O``@(`!3@A^Q(``@`%'*__@B'
- XM3R\)8```>"EK`#H!"'!_4H#1K`$(80``PD'K`%Q.KOZ`0>L`7$ZN_HPI0`%`:
- XM+P`D0"`J`"1G$BQL!TP@0"(H```I00$X3J[_@B(J`"!G&B0\```#[4ZN_^(IR
- XM0`%(9PKEB"!`)V@`"`"D(&P!0"\(2&P!!"!H`"0I:``$`4Q.N@D(3KH`='``2
- XM8`0@+P`$+P`@+`$P9P0@0$Z03KH0)"QX``0B;`=,3J[^8DZZ"-Y*K`%`9QHBU
- XM+`%(9P1.KO_<+'@`!$ZN_WPB;`%`3J[^AB`?+FP!1$YU<&1@M$/Z`!!P`$ZNG
- XM_=@I0`=,9^Q.=61O<RYL:6)R87)Y`&$```AA``):8/I.5?_\2.<C,F$`"$9A"
- XM``'`0>P`*"QL``!.KO\T*4``$$J`9@1A``'B(&P`$"!H`%9P`!`H``]R`>&AT
- XM*4$!5)/)+'@`!$ZN_MHI0``4(&P`$"EH`"X`#'`"*4`!6"!L``PP*``,2,!RE
- XM#Y"!*4`!7#`H``Y(P%V`*4`!8$/H`%1P8T'L!3@0V5'(__Q^`'`%OH!L``#2C
- XM(`=R3M*!3KH-*D/L`61"L0@(2'@`'DAX``$O0``@80`'K%!/0>P!9"(O`!@A-
- XM@!@,(`=R3M*!3KH,^D'L`631P$/H`!`L;``$3J[_.B`'<D[2@4ZZ#-Y![`%D9
- XM(DC3P$7I`'1'[`%D)XH(%-'`0^@`="!)("P!6'(/=`8L;``$3J[^>GP`O*P!R
- XM6&Q`(`=R3M*!3KH,H$/L`633P"`&Y8#3P"])`!A![``(<`PB/``!``(L;```Q
- XM3J[^="!O`!@A0`!\9@1A``"P4H9@NE*'8`#_*D/L!-0L;``$3J[_.D'L!<0IX
- XM2`38("P!6'(/=`9.KOYZ?`"\K`%8;!0@!N6`0>P%S"&\````#`@`4H9@YD/L\
- XM!'`L;``$3J[_.D'L!9PI2`1T<`%R#W0&3J[^>BE\``````6D3-],Q$Y=3G4O"
- XM#D/L`%AP`"QX``1.KOW8*4```$J`9@1A```@0^P`:G``+'@`!$ZN_=@I0``$+
- XM2H!F!&$```8L7TYU+PY![``(<`$L;```3J[^:$JL`!!G""!L`!!.KO^X2JP``
- XM!&<,(FP`!"QX``1.KOYB2JP``&<,(FP``"QX``1.KOYB0J=.N@HH6$\L7TYU@
- XM3E7_\$CG+S(@;``0(&@`5BQX``1.KOZ,*4`!4$J`9QHB0$ZN_H8@;`%0("@`6
- XM%`R````"`&8$80#_>GX`<`6^@&P``N8@!W).TH%.N@LD0^P!9"(Q"`@,@0``@
- XM``9D``+$Y8%.^Q@"8```%F```0I@``$T8``!A&```9A@``(`(`=R3M*!3KH*[
- XMZD/L`613L0@,9@`"D"`'<D[2@4ZZ"M0O+`%<0J<O0``H80`%8%!/0>P!9"(ON
- XM`"`A@!@`>@%\`'`%O(!L>"`&<D[2@4ZZ"J0O0``@0^P!9$JQ"`AG7"`'<D[2^
- XM@4ZZ"HPD;P`@<O%'[`%D)`K2LR@`1>P!9"0R"`"T@6\V(`9R3M*!3KH*9B]`6
- XM`"`@!W).TH%.N@I8<O%%[`%DTK((`$7L`60@+P`@(#((`+"!;P1Z`&`$4H9@B
- XM@DJ%9P#_5"`'<D[2@4ZZ"B9R"D/L`60C@0@$<@%#[`%D(X$("'(>0^P!9".!`
- XM"`PO!V$`!$983V```:X@!W).TH%.N@GR0^P!9"(Q"`Q#[`%D4[$(#$J!9@`!!
- XMCG("0^P!9".!"`A@``&`(`=R3M*!3KH)Q$/L`60H,0@$+P=A``%V6$_8@"M`K
- XM__1F%"`'<D[2@4ZZ":)R`T'L`60A@0@((`=R3M*!3KH)CD'L`60AA`@$+P=A&
- XM``/$6$]@``$L(`=R3M*!3KH)<'($0^P!9".!"`A@``$4(`=R3M*!3KH)6$/L[
- XM`60B,0@$*T'_^%.!*T'_^'0*LH)L&'(%0^P!9".!"`AR3T/L`60C@0@,*T+_,
- XM^"\'80`#(BZ'80`",B`'<D[2@4ZZ"1)![`%D(:W_^`@$+H=A``-&+H=A``*"W
- XM6$]@``"H(`=R3M*!3KH([$/L`61*L0@,9BY#[`%D0K$("$AX`!Y(>``!+T``!
- XM*&$``V1![`%D(B\`*"&`&`PNAV$``KA03V!D(`=R3M*!3KH(JD'L`60B,`@,?
- XM0>P!9%.P"`P@`7(*3KH(LDJ!9CXO!V$``9X@!W).TH%.N@A^0>P!9-'`0^@`#
- XM$$AX``5(>``.<``O`"\`2'@``2\`+PE.N@HN+H=A``':3^\`(%*'8`#]%DS??
- XM3/1.74YU3E7_Z$CG+P(N+P`X<`(K0/_P(`=R3M*!3KH()D'L`631P$/H`!!PW
- XM`"QL``1.KO\6(`=R3M*!3KH(""(L`6!![`%DDK`(!"@!<`:X@&\"*`"XK?_P2
- XM;`0K1/_P2H1F!G``8```["`'<D[2@4ZZ!]1![`%D(C`(!%R!0>P!9-'`0^@`\
- XM$$AX`,`O!$AX``]T`"\"+P(O"2\!0>P!9"\P"`!(;`4X3KH)Q"`'<D[2@4ZZ1
- XM!Y)![`%DT<!#Z``02'@`@$AX``9(>``/<``O`"\`+PDO`"\`2&P$U$ZZ"9!/L
- XM[P!((`=R3M*!3KH'6D'L`60K<`A\_^Q![`%D(@`&@0```(`K<!@`_^A\`+RMP
- XM__!L/GH`(`=R3M*!3KH'*G(`0>P!9#(P"'2Z@6P@(&W_[%*M_^Q*$&8,(&W_I
- XMZ%*M_^A*$&<$(`9@#%*%8,A2AF"\("W_\$S?0/1.74YU2.<C`"XO`!`@!W).'
- XMTH%.N@;:(BP!8$'L`622L`@$+`%P!KR`;P(L`$J&9SX@!W).TH%.N@:V0>P!G
- XM9"(P"`1<@4AX`"`O!DAX``\O`4'L`60O,`@`2&P%.'0`+P(O`DAL!-1.N@BN]
- XM3^\`)$S?`,1.=4CG(R`N+P`4(`=R3M*!3KH&:B(L`6!![`%DDK`(!"P!<`:\7
- XM@&\"+`!*AF=((`=R3M*!3KH&1D'L`60B2-/`1>D`$$'L`60B,`@$7(%(>`#@D
- XM+P9(>``/+P%![`%D+S`(`$AL!3AT`"\"+P(O"DZZ"#1/[P`D3-\$Q$YU+P<NM
- XM+P`((`=R3M*!3KH%\G(`+P%(>``&2'@`#T'L`60O,`@$0>P!9"\P"`!(;`4X.
- XM+P$O`4AL!'!.N@?N3^\`)"X?3G4O!RXO``@@!W).TH%.N@6N2'@`P$AX``9(5
- XM>``/0>P!9"\P"`1![`%D+S`(`$AL!3AR`"\!+P%(;`1P3KH'J$_O`"0N'TYU1
- XM0J=.N@%6+H!.N@*46$].=4CG`P`N+P`,+"\`$$ZZ`F0B!I*'4H%.N@6@(`?0J
- XM@4S?`,!.=0``3G5.=4CG!S`N+P`8)F\`'"PO`"`O!TZZ!@Q83R1`(`IF!'#_:
- XM8#8(*@`#``-G$$AX``)"IR\'3KH"0$_O``PO!B\++RH`!$ZZ!`1/[P`,*@!*4
- XMK`$<9P1P_V`"(`5,WPS@3G4``````````'!A3E7_^"\+)FP'+"`+9@1'^@!\`
- XM&5,'0!EK``$'01EK``('0D(L!T-![`=`*4@'.$'K``-(;?_X+PA.N@%:4$]65
- XM@-?`("W_^"(\```.$$ZZ!(8I0`<T2A-G'AE3!T09:P`!!T49:P`"!T9P`!E`3
- XM!T=R`2E!!S!@"$(L!T1"K`<P0>P'1"E(!SPF7TY=3G5#4U0V````````````G
- XM`````````````````````````````````````````$Y5__)(YP<0)F\`)DAM*
- XM__A.N@&26$]Z`!`M__DL``8&``I^`+X&9")P`!`'5(!R!$ZZ!`I*@68(!H4`=
- XM``%N8`8&A0```6U2!V#:?@$0+?_ZO@!D%'``$`=R`$'L`.<2,`@`VH%2!V#D;
- XM<``0!E2`<@1.N@/*2H%F#!`M__IR`K`!8P)2A7``$"W_^U.`VH`@!7(83KH#'
- XMB"H`<``0+?_\VH`@!7(\3KH#=BH`<``0+?_]VH`@!7(\3KH#9"H`<``0+?_^+
- XMVH!.NOZ"VJP'-"`+9P(FA2`%3-\(X$Y=3G4@;P`$(DAR`'``+P(,$``K9P8,8
- XM$``M9@)22!`8!```,&T2#```"6X,)`'E@=*"TH'2@F#!$`+68"1($D'R`(5
- XM4X`@;P`(((&0B4YU("P`]"(\```.74ZZ`NA6@`*`?____RE``/1.=2\'+B\`I
- XM""E'`/0N'TYU``!(YP\0+B\`&"PO`!PJ+P`@+P=.N@.86$\F0"`+9@1P_V`>7
- XM+P4O!B\K``1.N@(`3^\`#"@`2JP!'&<$</]@`B`$3-\(\$YU``````````!P,
- XM84Y5_^!(YR\0)F\`0$'M__0B""QL!TQ.KO]`("W_]"X\```'NBP`*T#_\`R&:
- XM```!;6\>(`=R!$ZZ`F!*@68(!(8```%N8`8$A@```6U2AV#:#(8```%M9A`@[
- XM!W($3KH".DJ!9P12AWP`(`8B!P2!```'O!=!``%T`!0!*T#_\"`"<@1.N@(45
- XM2H%F!'`=8`)P'!E``/EX`"HM__!P#+B`;!YP`$'L`/@0,$@`L(5N$'``0>P`K
- XM^!`P2`":@%*$8-P@!2($4H$700`"*T#_\%*`%T```R`M__1R!TZZ`;X6@2`M.
- XM__AR/$ZZ`;(70``$("W_^'(\3KH!I!=!``4@+?_\<C).N@&6%T``!B`M__QR9
- XM,DZZ`8C2@1=!``=,WPCT3EU.=0```````'!A2.<#$"XO`!!'[`"`(`MG-`@KV
- XM``(`&V8H""L``0`;9R`@*P`$D*L`$"P`2H9G$B\&+RL`$"\K`!Q.NOO:3^\``
- XM#"938,@O!TZZ`HA83TS?",!.=0``````````<&%(YS<0+B\`'"9O`"`L+P`D&
- XM2JP!-&<$3KH"#$*L`1PB!R0+)@8L;`=,3J[_T"H`</^Z@&8.3J[_?"E``1QPE
- XM!2E`!T@@!4S?".Q.=0``````````````````2.<_`"XO`!PL+P`@*B\`)$JL9
- XM`31G!$ZZ`;1"K`$<(`53@"(')`8F`"QL!TQ.KO^^*`!P_[B`9@Y.KO]\*4`!A
- XM''`6*4`'2"`%#(`````"9Q8,@`````%G"$J`9A@@!F`4(`30AF`.(@=T`'8`C
- XM+&P'3$ZN_[Y,WP#\3G4``"\'+B\`"$JL`31G!$ZZ`4(B!RQL!TQ.KO_<<``N3
- XM'TYU2.<P`"0`)@%(0DA#Q,'&P,#!U$-(0D)"T(),WP`,3G5*@&H``!Y$@$J!_
- XM:@``#$2!80``($2!3G5A```81(!$@4YU2H%J```,1(%A```&1(!.=2\"2$$TK
- XM`68``")(0$A!2$(T`&<```:$P3`"2$`T`(3!,`)(0C(")!].=2\#=A`,00"`X
- XM9```!N&944,,00@`9```!NF964,,02``9```!N6954-*06L```;CF5-#-`#FJ
- XMJ$A"0D+FJDA#@,$V`#`"-`-(0<3!D()D```(4T/0@63^<@`R`TA#Y[A(0,%!A
- XM)A\D'TYU+P<N+P`(<``I0`$<2H=K(KZL`'QL'"`'YX!![`7L2K`(`&<.(`?G9
- XM@$'L!>S1P"`(8`AP"2E`!TAP`"X?3G4``````````````````$CG`0)P`"(\P
- XM```P`"QX``1.KO[.+@`"AP``,`!*AV8$<`!@($JL`31G&"!L`31.D$J`9@1P?
- XM`&`,2'@`%$ZZ`!)83R`'3-]`@$YU8;1.=0``2.<'`"XO`!`@+`!\4X`L`$I&H
- XM:S`@!DC`YX!![`7L*C`(`$H%9QH(!0`"9A0@!DC`YX!![`7L+S`(!$ZZ_B18I
- XM3U-&8,PO!TZZ[_I83TS?`.!.=0``2.<\`BQL``0B;P`83.\`/P`<3J[^=$S?1
- XM0#Q.=0```````'!A2.<`,B9L!U`@"V<4)%,B2R`K``@L>``$3J[_+B9*8.B11
- XMR"E(!U0I2`=03-],`$YU2.<^`BQL``0@;P`<3.\``P`@(F\`*$SO`'P`+$ZN"
- XM_=A,WT!\3G4``````^P````"`````0```W8```-,`````@````,````,````*
- XM!@````````/R0``#Z@````8!````8XS/YC.8X`[__O_^?_Q__!_P!B````/RF
- XM```#Z0````````/R```#Z@```$$````````````````````````````````@O
- XM+2T@4W!I9&5R<R`M+2```!X`R`#-``H``0```@```!!.```````````````8D
- XM```````````````````````!:6YT=6ET:6]N+FQI8G)A<GD`9W)A<&AI8W,N&
- XM;&EB<F%R>0``````*````*(`````````````````````````````````````_
- XM``````#$````````````````````````````````````````````````````$
- XM````````````````````````````````````'QP?'A\>'Q\>'QX?`````1\<I
- XJ'QX?'A\?'A\>'P```^P````#`````P```*(```"`````0@````````/R`
- X``
- Xend
- Xsize 4992
- END_OF_FILE
- if test 7024 -ne `wc -c <'spiders.uu'`; then
- echo shar: \"'spiders.uu'\" unpacked with wrong size!
- fi
- # end of 'spiders.uu'
- fi
- if test -f 'spiders0.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'spiders0.uu'\"
- else
- echo shar: Extracting \"'spiders0.uu'\" \(393 characters\)
- sed "s/^X//" >'spiders0.uu' <<'END_OF_FILE'
- Xbegin 644 spiders.info
- XMXQ```0```````````!H`%``$``,``0#!K,@`````````````````````````?
- XM`````\(``````````````!,````$```````````````````````:`!,``@##.
- XMJF@#``````````````@`````````"``````````(``````````@````````#X
- XM'C``!G^8``&>8``'`#@`!5UH``6[J``!?O```..`````````````````````M
- XM`````````````````````````````````````````````````````````````
- X9``?^^``#SO@``=\0``#3@```````````````)
- X``
- Xend
- Xsize 250
- END_OF_FILE
- if test 393 -ne `wc -c <'spiders0.uu'`; then
- echo shar: \"'spiders0.uu'\" unpacked with wrong size!
- fi
- # end of 'spiders0.uu'
- fi
- echo shar: End of archive 1 \(of 1\).
- cp /dev/null ark1isdone
- MISSING=""
- for I in 1 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have the archive.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
- --
- Mail submissions (sources or binaries) to <amiga@uunet.uu.net>.
- Mail comments to the moderator at <amiga-request@uunet.uu.net>.
- Post requests for sources, and general discussion to comp.sys.amiga.
-